SpringBoot 表单验证 - CSDN博客

创建时间:2018/5/28 11:56
来源:https://blog.csdn.net/u010412719/article/details/70173798

SpringBoot 表单验证

表单验证,就是对用户的输入数据进行有效性检查,那么SpringBoot是如何来做的呢?

还是以添加学生为例来进行说明,其中,Student实体类的代码如下:

@Entity
public class Student {
    @Id
    @GeneratedValue
    private Integer id;

    private String name;

    private Integer age;

    public Student() {
    }
    //getter、setter方法
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

在前面博文SpringBoot 相关的数据库操作中,我们知道,如果不进行验证,则存储一个学生信息到数据库中的代码如下:

/**
 * 添加一个学生的信息到数据库中
 * */
@PostMapping(value="/add")
public Student studentAdd(Student student){
    return studentRepository.save(student);
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

这样就会导致age如果为负数也可以添加到数据库中,因此,确实需要进行验证。

作为例子,现在需要做这样一件事:即只有年满18岁的学生才能被添加进来。其他关于Student类的name属性是否为空以及长度呀等等验证方法类似。

具体验证步骤如下

1、在Student类中使用注解@Min对该类的相应属性age上进行限制。

    @Min(value = 18,message = "未满18岁")
    private Integer age;
  • 1
  • 2
  • 3

2、使用@Valid注解验证数据,并且使用BindingResult获取结果。具体修改StudentController中相应方法studentAdd中的代码如下:

/**
 * 添加一个学生的信息到数据库中,在添加之前进行验证是否符合要求
 * */
@PostMapping(value="/add")
public Student studentAdd(@Valid Student student, BindingResult bindingResult){
    if (bindingResult.hasErrors()){
        System.out.println(bindingResult.getFieldError().getDefaultMessage());
        return null;
    }
    return studentRepository.save(student);
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

以上就完成了对学生信息的验证,避免出现其他情况。

除了@Min注解之外,还有很多注解用于对属性做相应的限制以配合验证。

例如:

@Null 验证对象是否为空

@NotNull 验证对象是否为非空

@AssertTrue 验证 boolean 对象是否为 true

@AssertFalse 验证 boolean 对象是否为 false